local ADC_MAX = 4095       -- 12位ADC最大数值
local V_REF = 3.3          -- Air8000 ADC参考电压（单位：V）
local V_MIN = 0.5          -- 传感器最小输出电压（单位：V）
local V_MAX = 2.5          -- 传感器最大输出电压（单位：V）
local P_MIN = 0            -- 最小测量压力（单位：kPa）
local P_MAX = 2500         -- 最大测量压力（单位：kPa)
local ADC_0 = 0

local device_pressure = {}

-- 2. 读取ADC并转换为电压
local function read_voltage()
    adc.open(ADC_0)
    -- 读取ADC数值（Air8000的adc.read()返回0~4095）
    local adc_val = adc.read(ADC_0)
    adc.close(ADC_0)
    -- 转换为实际电压（V）
    local voltage = (adc_val / ADC_MAX) * V_REF
    return voltage
end

-- 3. 电压转换为压力
function device_pressure.get()
    -- 处理边界情况（电压超出传感器范围时）
    local voltage = read_voltage()
    if voltage < V_MIN then
        return P_MIN
    elseif voltage > V_MAX then
        return P_MAX
    end
    -- 线性转换计算压力
    local pressure = P_MIN + (voltage - V_MIN) / (V_MAX - V_MIN) * (P_MAX - P_MIN)
    return pressure
end

return device_pressure
